/**
 * @description user 控制层
 * @author LI
 */

const {
  createGoodPhoto,
  getGoodPhotosList,
  updateGoodPhotoById,
  deleteGoodPhotoById
} = require('../services/photo')
const { ReturnResult } = require('../model/ResultModel')

/**
 * 添加商品图片信息
 * @param {number} goodsInfoId 商品信息 id
 * @param {string} photoName 图片名称
 * @param {string} photoUrl 图片地址
 */
async function addGoodPhoto({ goodsInfoId, photoName, photoUrl }) {
  try {
    // 接下来交给服务层，
    // 此处可以返回新增等数据库之后的信息 const user = 信息，最后返回这个 user 就是新增数据库的信息
    await createGoodPhoto({
      goodsInfoId,
      photoName,
      photoUrl,
    })
    return new ReturnResult(0, null, true, "添加成功")
  } catch (e) {
    console.error(e.message, e.stack)
    return new ReturnResult(0, null, false, "添加失败，请重试")
  }
}

/**
 * 获取全部商品图片信息
 * @param {string} id 商品信息 id
 * @param {number} page 第几页
 * @param {number} limit 多少条
 */
async function getGoodPhotosAll({ id, page, limit }) {
  try {
    // 接下来交给服务层，
    // 此处可以返回新增等数据库之后的信息 const user = 信息，最后返回这个 user 就是新增数据库的信息
    const result = await getGoodPhotosList({
      id,
      page,
      limit,
    })
    return new ReturnResult(result.count, result.rows, true, "查询成功")
  } catch (e) {
    console.error(e.message, e.stack)
    return new ReturnResult(0, null, false, "查询失败，请重试")
  }
}

/**
 * 更新商品图片信息
 * @param {number} id id
 * @param {string} photoName 图片名称
 * @param {string} photoUrl 图片地址
 */
async function updateGoodPhoto({ id, photoName, photoUrl }) {
  try {
    // 接下来交给服务层，
    // 此处可以返回新增等数据库之后的信息 const user = 信息，最后返回这个 user 就是新增数据库的信息
    await updateGoodPhotoById({
      id,
      photoName,
      photoUrl,
    })
    return new ReturnResult(0, null, true, "更新成功")
  } catch (e) {
    console.error(e.message, e.stack)
    return new ReturnResult(0, null, false, "更新失败，请重试")
  }
}

/**
 * 删除商品图片信息
 * @param {number} id id
 */
async function deleteGoodPhoto(id) {
  try {
    // 接下来交给服务层，
    // 此处可以返回新增等数据库之后的信息 const user = 信息，最后返回这个 user 就是新增数据库的信息
    await deleteGoodPhotoById(id)
    return new ReturnResult(0, null, true, "删除成功")
  } catch (e) {
    console.error(e.message, e.stack)
    return new ReturnResult(0, null, false, "删除失败，请重试")
  }
}

module.exports = {
  addGoodPhoto,
  getGoodPhotosAll,
  updateGoodPhoto,
  deleteGoodPhoto
}
